#import "BRBaseView.h"
#import "NSDate+BRPickerView.h"
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, BRDatePickerMode) {
    BRDatePickerModeDate,
    BRDatePickerModeDateAndTime,
    BRDatePickerModeTime,
    BRDatePickerModeCountDownTimer,
    BRDatePickerModeYMDHMS,
    BRDatePickerModeYMDHM,
    BRDatePickerModeYMDH,
    BRDatePickerModeMDHM,
    BRDatePickerModeYMD,
    BRDatePickerModeYM,
    BRDatePickerModeY,
    BRDatePickerModeMD,
    BRDatePickerModeDHM,
    BRDatePickerModeHMS,
    BRDatePickerModeHM,
    BRDatePickerModeMS
};
typedef NS_ENUM(NSInteger, BRShowUnitType) {
    BRShowUnitTypeAll,
    BRShowUnitTypeOnlyCenter,
    BRShowUnitTypeNone
};
typedef NS_ENUM(NSInteger, BRMonthNameType) {
    BRMonthNameTypeFullName,
    BRMonthNameTypeShortName,
    BRMonthNameTypeNumber
};
typedef void (^BRDateResultBlock)(NSDate * _Nullable selectDate, NSString * _Nullable selectValue);
@interface BRDatePickerView : BRBaseView
@property (nonatomic, assign) BRDatePickerMode pickerMode;
@property (nullable, nonatomic, strong) NSDate *selectDate;
@property (nullable, nonatomic, copy) NSString *selectValue;
@property (nullable, nonatomic, strong) NSDate *minDate;
@property (nullable, nonatomic, strong) NSDate *maxDate;
@property (nullable, nonatomic, copy) BRDateResultBlock resultBlock;
@property (nullable, nonatomic, copy) BRDateResultBlock changeBlock;
@property (nonatomic, assign) BRShowUnitType showUnitType;
@property (nonatomic, assign, getter=isShowWeek) BOOL showWeek;
@property (nonatomic, assign, getter=isShowToday) BOOL showToday;
@property (nonatomic, assign, getter=isAddToNow) BOOL addToNow;
@property (nonatomic, assign, getter=isDescending) BOOL descending;
@property (nonatomic, assign, getter=isNumberFullName) BOOL numberFullName;
@property (nonatomic, assign) NSInteger minuteInterval;
@property (nonatomic, assign) NSInteger secondInterval;
@property (nonatomic, assign) NSTimeInterval countDownDuration;
@property (nonatomic, assign) BRMonthNameType monthNameType;
@property (nonatomic, assign, getter=isShowAMAndPM) BOOL showAMAndPM;
- (instancetype)initWithPickerMode:(BRDatePickerMode)pickerMode;
- (void)show;
- (void)dismiss;
+ (void)showDatePickerWithMode:(BRDatePickerMode)mode
                         title:(nullable NSString *)title
                   selectValue:(nullable NSString *)selectValue
                   resultBlock:(nullable BRDateResultBlock)resultBlock;
+ (void)showDatePickerWithMode:(BRDatePickerMode)mode
                         title:(nullable NSString *)title
                   selectValue:(nullable NSString *)selectValue
                  isAutoSelect:(BOOL)isAutoSelect
                   resultBlock:(nullable BRDateResultBlock)resultBlock;
+ (void)showDatePickerWithMode:(BRDatePickerMode)mode
                         title:(nullable NSString *)title
                   selectValue:(nullable NSString *)selectValue
                       minDate:(nullable NSDate *)minDate
                       maxDate:(nullable NSDate *)maxDate
                  isAutoSelect:(BOOL)isAutoSelect
                   resultBlock:(nullable BRDateResultBlock)resultBlock;
@end
NS_ASSUME_NONNULL_END
